# 函数复习
import sys

"""
函数返回值  ：  return
    return 返回一个或者多个值，也可以单独使用return关键字
    return :表示函数结束调用 类似于break；是不过 break 中断当前循环还会执行循环后面的操作，而return 直接结束函数，后面不执行
    return a
    return a,b ------------>(a,b)

全局变量和局部变量
    全局变量
        1. 什么是全局变量、全局变量的位置
            全局变量可以直接用，但是不能再函数中修改
        2. 全局变量是不可变类型：
            不可再函数中修改，如果要修改必须加global 关键字声明
        3. 全局变量是可变类型
            函数中可以修改
        4. globals() 函数：可以查看全局变量
    局部变量（函数）：
        1. 函数内部定义的便令
        2. 使用范围仅限函数内部；当函数调用结束就会回收变量（生命周期就在内部）
        3. 通络 locals 查看局部变量----> 字典
        4. 内部函数也可以看成局部变量
可变参数和不可变参数：
    当前的值和地址的关系：
        可变：值变了，地址没变； dict  list  set
        不可变：值变了 地址也变了； int str bool tuple  float

地址引用：传递一个地址
    1. 普通的赋值关系：
        调函数也会出现一次引用
    2. 函数参数
        函数参数类型是什么：可变还是不可变
函数嵌套：

闭包（装饰器）：
    1. 必须是嵌套函数
    2. 内部函数引用外部函数变量
    3. 返回值是内部函数
"""

print(globals())  # 查看全局变量：返回格式字典：1.系统的全局变量 2. 自定义的全局变量

lst = [1, 2, 3]
lst1 = lst

print(sys.getrefcount(lst1))  # 因为调用会引用一次，所以结果是3
